home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / gtlayout-source.lha / LTP_Storage.c < prev    next >
C/C++ Source or Header  |  1996-10-08  |  4KB  |  229 lines

  1. /*
  2. **    GadTools layout toolkit
  3. **
  4. **    Copyright © 1993-1996 by Olaf `Olsen' Barthel
  5. **        Freely distributable.
  6. **
  7. **    :ts=4
  8. */
  9.  
  10. #ifndef _GTLAYOUT_GLOBAL_H
  11. #include "gtlayout_global.h"
  12. #endif
  13.  
  14. VOID
  15. LTP_GetStorage(ObjectNode *Node)
  16. {
  17.     if(Node->Storage)
  18.     {
  19.         LONG    Number = 0;
  20.         STRPTR    String = NULL;
  21.  
  22.         switch(Node->StorageType)
  23.         {
  24.             case STORAGE_BYTE:
  25.  
  26.                 Number = *(BYTE *)Node->Storage;
  27.                 break;
  28.  
  29.             case STORAGE_UBYTE:
  30.  
  31.                 Number = *(UBYTE *)Node->Storage;
  32.                 break;
  33.  
  34.             case STORAGE_WORD:
  35.  
  36.                 Number = *(WORD *)Node->Storage;
  37.                 break;
  38.  
  39.             case STORAGE_UWORD:
  40.  
  41.                 Number = *(UWORD *)Node->Storage;
  42.                 break;
  43.  
  44.             case STORAGE_LONG:
  45.  
  46.                 Number = *(LONG *)Node->Storage;
  47.                 break;
  48.  
  49.             case STORAGE_ULONG:
  50.  
  51.                 Number = *(ULONG *)Node->Storage;
  52.                 break;
  53.  
  54.             case STORAGE_STRPTR:
  55.  
  56.                 String = Node->Storage;
  57.                 break;
  58.         }
  59.  
  60.         switch(Node->Type)
  61.         {
  62.             case CHECKBOX_KIND:
  63.             case LISTVIEW_KIND:
  64.             case MX_KIND:
  65.             case CYCLE_KIND:
  66.             case PALETTE_KIND:
  67.             case SLIDER_KIND:
  68.             case SCROLLER_KIND:
  69. #if defined(DO_POPUP_KIND) && defined(DO_BOOPSI_KIND)
  70.             case POPUP_KIND:
  71. #endif
  72. #if defined(DO_TAB_KIND) && defined(DO_BOOPSI_KIND)
  73.             case TAB_KIND:
  74. #endif
  75. #ifdef DO_GAUGE_KIND
  76.             case GAUGE_KIND:
  77. #endif
  78.  
  79. #ifdef DO_TAPEDECK_KIND
  80.             case TAPEDECK_KIND:
  81. #endif    /* DO_TAPEDECK_KIND */
  82.  
  83.                 Node->Current = Number;
  84.                 break;
  85.  
  86.             case STRING_KIND:
  87. #ifdef DO_PASSWORD_KIND
  88.             case PASSWORD_KIND:
  89. #endif
  90.                 Node->Special.String.String = String;
  91.                 break;
  92.  
  93.             case INTEGER_KIND:
  94.  
  95.                 Node->Special.Integer.Number = Number;
  96.                 break;
  97. #ifdef DO_LEVEL_KIND
  98.             case LEVEL_KIND:
  99.  
  100.                 Node->Current = Number;
  101.                 break;
  102. #endif    /* DO_LEVEL_KIND */
  103.         }
  104.     }
  105. }
  106.  
  107.  
  108. /*****************************************************************************/
  109.  
  110.  
  111. VOID
  112. LTP_PutStorage(ObjectNode *Node)
  113. {
  114.     if(Node->Storage)
  115.     {
  116.         LONG    Number = 0;
  117.         STRPTR    String = NULL;
  118.  
  119.         switch(Node->Type)
  120.         {
  121.             case CHECKBOX_KIND:
  122.             case LISTVIEW_KIND:
  123.             case MX_KIND:
  124.             case CYCLE_KIND:
  125.             case PALETTE_KIND:
  126.             case SLIDER_KIND:
  127.             case SCROLLER_KIND:
  128. #if defined(DO_POPUP_KIND) && defined(DO_BOOPSI_KIND)
  129.             case POPUP_KIND:
  130. #endif
  131. #if defined(DO_TAB_KIND) && defined(DO_BOOPSI_KIND)
  132.             case TAB_KIND:
  133. #endif
  134. #ifdef DO_GAUGE_KIND
  135.             case GAUGE_KIND:
  136. #endif
  137.  
  138. #ifdef DO_TAPEDECK_KIND
  139.             case TAPEDECK_KIND:
  140. #endif    /* DO_TAPEDECK_KIND */
  141.                 Number = Node->Current;
  142.                 break;
  143.  
  144. #ifdef DO_PASSWORD_KIND
  145.             case PASSWORD_KIND:
  146.  
  147.                 String = Node->Special.String.RealString;
  148.                 break;
  149. #endif
  150.  
  151.             case STRING_KIND:
  152.  
  153.                 if(Node->Host)
  154.                     String = ((struct StringInfo *)Node->Host->SpecialInfo)->Buffer;
  155.                 else
  156.                     String = Node->Special.String.String;
  157.  
  158.                 break;
  159.  
  160.             case INTEGER_KIND:
  161.  
  162.                 if(Node->Host)
  163.                     Number = ((struct StringInfo *)Node->Host->SpecialInfo)->LongInt;
  164.                 else
  165.                     Number = Node->Special.Integer.Number;
  166.  
  167.                 break;
  168. #ifdef DO_LEVEL_KIND
  169.             case LEVEL_KIND:
  170.  
  171.                 Number = Node->Current;
  172.                 break;
  173. #endif    /* DO_LEVEL_KIND */
  174.         }
  175.  
  176.         switch(Node->StorageType)
  177.         {
  178.             case STORAGE_BYTE:
  179.  
  180.                 if(!String)
  181.                     *(BYTE *)Node->Storage = (BYTE)Number;
  182.  
  183.                 break;
  184.  
  185.             case STORAGE_UBYTE:
  186.  
  187.                 if(!String)
  188.                     *(UBYTE *)Node->Storage = (UBYTE)Number;
  189.  
  190.                 break;
  191.  
  192.             case STORAGE_WORD:
  193.  
  194.                 if(!String)
  195.                     *(WORD *)Node->Storage = (WORD)Number;
  196.  
  197.                 break;
  198.  
  199.             case STORAGE_UWORD:
  200.  
  201.                 if(!String)
  202.                     *(UWORD *)Node->Storage = (UWORD)Number;
  203.  
  204.                 break;
  205.  
  206.             case STORAGE_LONG:
  207.  
  208.                 if(!String)
  209.                     *(LONG *)Node->Storage = (LONG)Number;
  210.  
  211.                 break;
  212.  
  213.             case STORAGE_ULONG:
  214.  
  215.                 if(!String)
  216.                     *(ULONG *)Node->Storage = (ULONG)Number;
  217.  
  218.                 break;
  219.  
  220.             case STORAGE_STRPTR:
  221.  
  222.                 if(String)
  223.                     strcpy(Node->Storage,String);
  224.  
  225.                 break;
  226.         }
  227.     }
  228. }
  229.